# python 多进程

"""
# 一、多任务的概念

多任务是指在同一时间内执行多个任务。
例如：现在电脑安装的操作系统都是多任务操作系统，可以同时运行着多个软件。
有以下两种执行方式：
    ·并发
    ·并行

·并发：
    在一段时间内  交替 去执行任务。
    例如：
    对于单核CPU处理多任务，操作系统轮流让各个软件交替执行，假如：软件1执行0.01秒，切换到软件2，软件2执行0.01秒，再切换到软件3，执行0.01秒。。。
    这样反复执行下去。表面上看，每个软件都是交错执行的，但是，由于CPU的执行速度实在是太快了，我们感觉就像这些软件都在同时执行一样，
    这里需要注意单核CPU是并发的执行多任务的。

·并行：
    对于多核CPU处理多任务，操作系统会给CPU的每个内核安排一个执行的软件，多个内核是真正的一起执行软件。
    这里需要注意多核CPU是并行的执行多任务，始终有多个软件一起执行。

"""

"""
1、进程和线程的定义

进程（Process），顾名思义，就是进行中的程序。
进程是Python中最小的资源分配单元，进程之间的数据，内存是不共享的，每启动一个进程，都要独立分配资源和拷贝访问的数据，
所以进程的启动和销毁的代价是比较大。

Python中的多线程无法利用多核优势，如果想要充分地使用多核CPU的资源，在Python中大部分情况需要使用多进程。

线程 是操作系统能够进行运算调度的最小单位，它被阿包含在进程中，是进程中的实际运作单位。
一条线程指的是进程中一个单一顺序的控制流，一个进程中可以 并发 多个线程，每条线程并发执行不同的任务。
在同一个进程内的线程的数据是可以进行互相访问的，这点区别于多进程。

一个进程至少要包含一个线程，每个进程在启动的时候就会自动的启动一个线程，进程里面的第一个线程就是主线程，
每次在进程内创建的子线程都是由 主线程进程 创建和销毁，子线程也可以由 主线程创建出来的线程 创建和销毁线程。
"""

"""
进程与线程的区别
1、线程是执行的指令集，进程是资源的集合；
2、一个程序中默认有一个主进程，一个进程中默认有一个主线程；
3、线程的启动速度要比进程的启动速度要快；
4、一个新的线程很容易被创建，一个新的进程创建需要对父进程进行一个克隆；
5、线程共享创建它的进程的内存空间，进程的内存是独立的；
6、两个线程共享的数据都是同一份数据，两个子进程的数据是不共享的，而且数据是独立的；
7、同一个进程的线程之间可以直接交流，同一个主进程的多个子进程之间是不可以进行交流，如果两个进程之间需要通信，就必须要通过一个中间代理来实现；
8、一个线程可以控制和操作同一个进程里的其他线程，线程与线程之间没有隶属关系，但是进程只能操作子进程。
"""
